//
//  SXNetworkManager.h
//  iOS_Router_Runtime
//
//  Created by 王水鑫 on 2018/12/13.
//  Copyright © 2018年 王水鑫. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN
// 运用下列回调然后刷新页面信息时，特别注意一下渲染是否在主线程
@protocol SXNetworkManagerDelegate <NSObject>

@optional
/**
 监听网络请求是否正在进行
 
 @param isRunning 是否正在请求
 */
- (void)SXNetworkManagerRunning:(BOOL)isRunning;

//
/**
 单个任务的上传下载任务进度

 @param progress 单个任务的完成进度
 */
- (void)SXNetworkManagerLoadingProgress:(float)progress;

/**
 多个任务单元的完成进度

 @param quantity 完成的任务个数
 */
- (void)SXNetworkManagerFinishedTaskQuantity:(int)quantity;

/**
 停止加载动画，提示错误信息

 @param message 错误信息
 */
- (void)SXNetworkManagerExecuteErrorPromptInsteadOfLoadingAnimation:(NSString *)message;

/**
 请求失败时，返回error信息

 @param error 错误信息
 */
- (void)SXNetworkManagerFailureReturnErrorInfo:(NSError *)error;

@required
/**
 请求服务器返回时回调
 
 @param response 网络请求返回值
 */
- (void)SXNetworkManagerSuccessReturnJsonResponse:(NSDictionary *)response urlPath:(NSString *)urlPath parameters:(NSDictionary *)parameters;

@end

@interface SXNetworkManager : NSObject

@property (strong, nonatomic) NSString *errorPrompt; // 错误提示

/**
 Post请求服务器

 @param urlPath 接口
 @param parameters 参数
 @param delegate 代理
 @param managerObject 代理持有对象
 */
+ (void)launchPostRequestToRemoteServerWithURLPath:(NSString *)urlPath parameters:(NSDictionary *)parameters delegate:(id<SXNetworkManagerDelegate>)delegate managerObject:(SXNetworkManager *)managerObject;

@end

NS_ASSUME_NONNULL_END
